//package dsk.demo.product;
//
//import cn.hutool.core.io.FileUtil;
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.http.HttpResponse;
//import cn.hutool.http.HttpUtil;
//import cn.hutool.poi.excel.ExcelUtil;
//import cn.hutool.poi.excel.ExcelWriter;
//import dsk.demo.product.entity.ProductCarEntity;
//import dsk.demo.product.entity.ProductEntity;
//import dsk.demo.product.entity.ProductRefEntity;
//import org.jsoup.Jsoup;
//import org.jsoup.nodes.Document;
//import org.jsoup.nodes.Element;
//import org.jsoup.select.Elements;
//import org.junit.jupiter.api.Test;
//import org.xml.sax.SAXException;
//
//import java.io.BufferedReader;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.nio.charset.Charset;
//import java.util.*;
//
//
////http://cnfonan.cn    数据爬取
//public class PaChongWithImage {
//
//
//    private static final String  baseHighfilUrl = "http://cnfonan.cn/";
//    private static final String  yinpeiImageBaseUrl = "http://yinpeiauto.com/images/";
//    private static ExcelWriter productWriter = ExcelUtil.getWriter("C:\\Users\\Administrator\\Desktop\\歧管压力传感器_产品.xls");
//    private static ExcelWriter refWriter = ExcelUtil.getWriter("C:\\Users\\Administrator\\Desktop\\歧管压力传感器_OEM.xls");
//    private static ExcelWriter carWriter = ExcelUtil.getWriter("C:\\Users\\Administrator\\Desktop\\歧管压力传感器_车型.xls");
//    private static String  imagePath = "C:\\Users\\Administrator\\Desktop\\歧管压力传感器图片";
//    static {
//        //配置别名
//        LinkedHashMap<String, String> map = new LinkedHashMap<>();
//        map.put("productNo","本厂编号");
//        map.put("image","图片地址");
//        map.put("price","价格");
//        map.put("attributes","属性");
//        map.put("application","车型");
//        map.put("image1","图片1");
//        map.put("image2","图片2");
//        map.put("image3","图片3");
//        map.put("image4","图片4");
//        map.put("image5","图片5");
//        productWriter.setHeaderAlias(map);
//        //只写入配置了别名的属性
//        productWriter.setOnlyAlias(true);
//
//        //配置别名
//        LinkedHashMap<String, String> refMap = new LinkedHashMap<>();
//        map.put("productNo","本厂编号");
//        map.put("brand","品牌");
//        map.put("refNo","OEM号码");
//        refWriter.setHeaderAlias(map);
//        //只写入配置了别名的属性
//        refWriter.setOnlyAlias(true);
//
//        //配置别名
//        LinkedHashMap<String, String> carMap = new LinkedHashMap<>();
//        map.put("productNo","本厂编号");
//        map.put("brand","品牌");
//        map.put("fullname","车型全名");
//        carWriter.setHeaderAlias(carMap);
//        //只写入配置了别名的属性
//        carWriter.setOnlyAlias(true);
//    }
//
//    //获取highfil 产品目录
//    @Test
//    public void fun() throws IOException, SAXException {
//        //第一页
//        String nextPageHref = "Product.aspx?typeid=239";
//
////        String path = "F:\\uploadFile\\test.html";
////        File file = null;
//        File detailFile = new File("C:\\Users\\Administrator\\Desktop\\歧管压力传感器_目录.txt");
////        try {
////            file = ResourceUtils.getFile(path);
////        } catch (FileNotFoundException e) {
////            e.printStackTrace();
////        }
//
//        while (true) {
//
//            //获取url中的 HTML页面
//            String content = HttpUtil.createPost(baseHighfilUrl + nextPageHref)
//                    .header("Cookie", "security_session_verify=ce73b20bec1e75863ab7fdd1c5c9934e; ASP.NET_SessionId=0hq5yc2wvx3eprwvbb2icoch")
//                    .execute().body();
////            String content = FileReader.create(file).readString();;
//
//            Document doc = Jsoup.parse(content);
//            Element body = doc.body();
//
//            //获取表单元素
//            Element demo = body.getElementById("demo");
//            if (demo == null) {
//                System.out.println("当前页面:" + nextPageHref);
//            }
//            Elements u = demo.getElementsByTag("u");
//            Set<String> urlList = new HashSet<>();
//            u.stream().forEach( item -> {
//                if (item.ownText().startsWith("FA") && item.ownText().indexOf("+") < 0) {
//                    System.out.println(item.ownText() +"-----"+ item.parent().attr("href"));
//                    urlList.add(item.parent().attr("href"));
//                }
//            });
//            //写入 txt文件
//            FileUtil.appendLines(urlList,detailFile, Charset.forName("utf-8"));
//
//            Elements next = body.getElementsContainingOwnText("Next");
//            if (next.isEmpty() || StrUtil.isBlank(next.get(0).attr("href"))) {
//                break;
//            }
//            nextPageHref = next.get(0).attr("href");
//        }
//
//    }
//
//    //获取highfil  产品细节
//    @Test
//    public void getDetail() throws IOException {
//        File detailFile = new File("C:\\Users\\Administrator\\Desktop\\歧管压力传感器_目录.txt");
//        BufferedReader reader = FileUtil.getReader(detailFile, Charset.forName("utf-8"));
//        String line;
//        List<ProductEntity> resultList = new ArrayList<>();
//        while ( (line = reader.readLine()) != null) {
//            //获取url中的 HTML页面
//            String content = HttpUtil.createPost(baseHighfilUrl + line)
//                    .header("Cookie", "security_session_verify=ce73b20bec1e75863ab7fdd1c5c9934e; ASP.NET_SessionId=0hq5yc2wvx3eprwvbb2icoch")
//                    .execute().body();
//            Document doc = Jsoup.parse(content);
//            Element body = doc.body();
//            Elements a22s = body.getElementsByClass("a22s");
//            if (a22s.isEmpty()) {
//                continue;
//            }
//            // ---------------------处理产品--------------------------------
//            ProductEntity productEntity = new ProductEntity();
//            //产品编号
//            Elements part_no = a22s.get(0).getElementsContainingOwnText("Product NO.:");
//            productEntity.setProductNo(part_no.get(0).parent().ownText());
//            //产品属性
//            Elements parm = a22s.get(0).getElementsContainingOwnText("Parm");
//            if (!parm.isEmpty()) {
//                productEntity.setAttributes(parm.get(0).ownText().replaceAll("Parm \\(\\):",""));
//            }
//            //产品图片
//            Element bigpicarea = body.getElementById("bigpicarea");
//            Elements children = bigpicarea.children();
//            for (int i=0;i<children.size() && i < 6;i++) {
//                Element child = bigpicarea.child(i);
//                String imageUrl = child.getElementsByTag("a").get(0).attr("href");
//                String filename = getAndDownloadImage(baseHighfilUrl + imageUrl, imagePath);
//                if (i == 0) {
//                    productEntity.setImage(yinpeiImageBaseUrl + filename);
//                } else if (i == 1) {
//                    productEntity.setImage1(yinpeiImageBaseUrl + filename);
//                } else if (i == 2) {
//                    productEntity.setImage2(yinpeiImageBaseUrl + filename);
//                } else if (i == 3) {
//                    productEntity.setImage3(yinpeiImageBaseUrl + filename);
//                } else if (i == 4) {
//                    productEntity.setImage4(yinpeiImageBaseUrl + filename);
//                } else if (i == 5) {
//                    productEntity.setImage5(yinpeiImageBaseUrl + filename);
//                }
//            }
//
//
//            System.out.println(productEntity);
//            ArrayList<ProductEntity> list = new ArrayList<>();
//            list.add(productEntity);
//            productWriter.write(list,false);
//            productWriter.flush();
//            //-----------处理OEM号码-----------------------
//            Elements a22s1 = body.getElementsByClass("a22s1");
//            if (a22s1.isEmpty()) {
//                continue;
//            }
//            List<ProductRefEntity> refList = new ArrayList<>();
//            for (Element element : a22s1) {
//                Elements refElement = element.getElementsByTag("tr");
//                for (Element refE : refElement) {
//                    Elements child = refE.children();
//                    if (StrUtil.isNotBlank(child.get(0).attr("style"))) {
//                        continue;
//                    }
//                    ProductRefEntity productRefEntity = new ProductRefEntity();
//                    productRefEntity.setProductNo(productEntity.getProductNo());
//                    productRefEntity.setBrand(child.get(0).ownText());
//                    productRefEntity.setRefNo(child.get(1).ownText());
//                    refList.add(productRefEntity);
//                }
//            }
//            refWriter.write(refList,false);
//            refWriter.flush();
//            //-----------------------车型数据------------------
//            Element cardetaillist = body.getElementById("Cardetaillist");
//            if (cardetaillist!=null) {
//                List<ProductCarEntity> carList = new ArrayList<>();
//                if (!cardetaillist.children().isEmpty()) {
//                    //车型不为空
//                    Elements onclicks = cardetaillist.getElementsByAttribute("onclick");
//                    for (Element model : onclicks) {
//                        //品牌 + 车系  用下划线分割
//                        String brandAndName = model.child(0).ownText();
//                        String idStr = model.attr("onclick").split("\\'")[1];
//                        //找到隐藏的 车型元素
//                        int i = 0;
//                        while (true) {
//                            Element elementById = cardetaillist.getElementById(idStr + i);
//                            if (elementById == null) {
//                                break;
//                            }
//                            //车型全名
//                            ProductCarEntity entity = new ProductCarEntity();
//                            entity.setProductNo(productEntity.getProductNo());
//                            entity.setBrand(brandAndName.split("_")[0]);
//                            entity.setFullname(brandAndName + " "+ elementById.child(0).ownText() + " "+  elementById.child(6).ownText());
//                            carList.add(entity);
//                            i++;
//                        }
//                    }
//                    carWriter.write(carList,false);
//                    carWriter.flush();
//                }
//            }
//
//
//        }
//        reader.close();
//        carWriter.close();
//        refWriter.close();
//        productWriter.close();
//
//
//    }
//
//
//    public String getAndDownloadImage(String url,String filePath) throws IOException {
//        HttpResponse response = HttpUtil.createGet(url)
//                .header("Cookie", "security_session_verify=ce73b20bec1e75863ab7fdd1c5c9934e; ASP.NET_SessionId=0hq5yc2wvx3eprwvbb2icoch")
//                .execute();
//        System.out.println("请求成功");
//        File dir = new File(filePath);
//        if (!dir.exists()) {
//            dir.mkdirs();
//        }
//        File file = response.completeFileNameFromHeader(dir);
//        FileOutputStream fileOutputStream = new FileOutputStream(file);
//        fileOutputStream.write(response.bodyBytes());
//        fileOutputStream.flush();
//        fileOutputStream.close();
//        response.close();
//        return file.getName();
//    }
//}
